endl那些不为人知的故事

我一直是用 Visual Studio 2022 编辑C/C++代码。众所周知,VS的函数会标上黄色。

有一天,我输入那熟悉的 cout << endl; 时,发现那不被注意的 endl 标上了黄色。

于是,我点进去了 ostream ……

endl 源码如下(占据 ostream 的1009 ~ 1015行):

我们可以发现, endl 是一个函数,传进了一个 ostream& 类型的参数,为了连续,返回了一个 ostream& 的值。

所以,以下代码是合法的:

相当于:

我们是不是也可以制作一个?答案是肯定的。以下是我自己写的 space 函数,用来输出一个空格:

那么,以下代码是合法的:

它输出了以下结果: